package com.heqiang.controller.manager;


import com.heqiang.constant.Constant;
import com.heqiang.entity.manager.Admin;
import com.heqiang.service.AdminService;
import com.heqiang.service.RoleService;
import com.heqiang.tools.*;
import com.heqiang.utils.BaseController;
import com.heqiang.utils.Result;
import com.heqiang.utils.ResultUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
@RequestMapping("/admin/admin")
public class AdminController extends BaseController {

    @Autowired
    private AdminService service;
    @Autowired
    private RoleService roleService;


    /****************************************************************************************************************** Query *********************************************************************************************/
    //查询-全部管理员数据
    @RequestMapping("/search")
    public DataTableResult search(Admin admin, DataTableParam dataTableParam) {
        return DataTableResultUtils.returnSuccess(service.search(admin, dataTableParam));
    }

    //查询-根据id
    @RequestMapping("/get")
    public Admin findById(Long id) {
        return service.findById(id);
    }

    /****************************************************************************************************************** Modify ********************************************************************************************/
    //删除-根据id
    @RequestMapping("/delete")
    public Result del(Long id) {
        service.del(id);
        return ResultUtils.returnSuccess("删除成功!");
    }

    //编辑用户状态
    @RequestMapping("/modify-status")
    public Result modifyStatus(Admin admin) {
        Assert.notNull(admin.getId(), "参数异常");
        Assert.notNull(admin.getStatus(), "参数异常");
        service.modifyStatus(admin);
        return ResultUtils.returnSuccess(admin.getStatus() == Admin.STATUS.OPEN ? "激活成功" : "禁用成功");
    }
    //编辑用户状态
    @RequestMapping("/modify")
    public Result modify(Admin admin) {
        Assert.notNull(admin.getId(), "参数异常!");
        service.modify(admin);
        return ResultUtils.returnSuccess("编辑成功!");
    }

    //重置密码
    @RequestMapping("/reset")
    public Result reset(Admin admin) {
        Assert.notNull(admin.getId(), "id参数异常");
        admin.setPassword(MD5.parseMD5(Constant.DEFAULT_PWD + Constant.PWD_SUFFIX));
        service.reset(admin);
        return ResultUtils.returnSuccess("重置密码成功!");
    }

    //新增用户
    @RequestMapping("/add")
    public Result add(Admin admin) {
        service.add(admin);
        return ResultUtils.returnSuccess("新增管理员成功");
    }

    /****************************************************************************************************************** Go ************************************************************************************************/
    //管理员列表
    @RequestMapping("/go/list")
    public ModelAndView goList() {
        return super.goView("/admin/list");
    }

    //管理员列表
    @RequestMapping("/go/modify")
    public ModelAndView goModify(Long id, ModelAndView modelAndView) {
        Admin admin = service.findById(id);
        modelAndView.addObject("admin",admin);
        modelAndView.addObject("roleList",roleService.findAll());
        modelAndView.setViewName("/admin/modify");
        return modelAndView;
    }
}
